package Datos;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.CallableStatement;
import java.util.*;

public class OrdenCompra {
	Sesion oSesion;
	
	public OrdenCompra() {};
	
	public int Add(Entidades.OrdenCompra item) throws Exception{
		try{
		Connection oCnn = Datos.General.CrearConexion();
		String storedProcedure = "{call cpd.OrdenCompraAdd(?,?,?,?,?,?,?,?,?,?)}";
		CallableStatement cs =oCnn.prepareCall(storedProcedure);
		poneDatos(item,cs);
		boolean pipi = cs.execute();
		int numero = 0;
		if (pipi) numero = 1;
		return numero;
		} catch (Exception ex){
			   System.out.println("SQLException: " + ex.getMessage());
			   return -1;
		}
	}
	public void Update(Entidades.OrdenCompra item) throws Exception{
		try{
			Connection oCnn = Datos.General.CrearConexion();
			String storedProcedure = "{call cpd.OrdenCompraUpdate(?,?,?,?,?,?,?,?,?,?)}";
			CallableStatement cs =oCnn.prepareCall(storedProcedure);
			poneDatos(item,cs);
			cs.execute();
			return;
		} catch (Exception ex){
			   System.out.println("SQLException: " + ex.getMessage());
		}
	}
	public void Delete(String id) throws Exception{
		try{
			Connection oCnn = Datos.General.CrearConexion();
			String storedProcedure = "{call cpd.OrdenCompraDelete(?)}";
			CallableStatement cs =oCnn.prepareCall(storedProcedure);
			cs.setString("mIdOrdenVenta", id);
			cs.execute();
			return;
		} catch (Exception ex){
			   System.out.println("SQLException: " + ex.getMessage());
		}
	}
	private void poneDatos(Entidades.OrdenCompra item, CallableStatement cs){
		try{
			cs.setDouble("mNroOrden", item.getNroOrden());
			cs.setDate("mFecActivacion",  new java.sql.Date(item.getFchActivacion().getTime()));
			cs.setDate("mFecCreacion",  new java.sql.Date(item.getFchCreacion().getTime()));
			cs.setInt("mPlazoVigencia",item.getPlazoVigencia());
			//cs.setString("mSegmento",item.getSegmento());
			//cs.setString("mEstado",item.getEstado());
		} catch (Exception ex){
			   System.out.println("SQLException: " + ex.getMessage());
		}
	}
	public List sacaDatos(ResultSet rs, Entidades.EstadoOrden oEstadoOrden, Entidades.Comitente oComitente, Entidades.Personal oPersonal, Entidades.Segmento oSegmento, List oDatos){
		try{
			Entidades.OrdenCompra oDato = null;
			oDato = new Entidades.OrdenCompra(
					rs.getInt(1),
					rs.getInt(2),
					rs.getDate(3),
					rs.getDate(4),
					rs.getInt(5),
					oEstadoOrden,
					oComitente,
					oPersonal,
					oSegmento,
					rs.getFloat(10),
					rs.getFloat(11),
					rs.getInt(12)
					);
					oDatos.add(oDato);
					oDato = null;
		} catch (Exception ex){
			System.out.println("SQLException: " + ex.getMessage());
		}
		return oDatos;
	}

}
